//
// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.2.8-b130911.1802 生成的
// 请访问 <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
// 在重新编译源模式时, 对此文件的所有修改都将丢失。
// 生成时间: 2019.03.12 时间 12:12:00 PM CST 
//


package com.youhome.service.listhub;

import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.datatype.XMLGregorianCalendar;


/**
 * <p>Person complex type的 Java 类。
 * 
 * <p>以下模式片段指定包含在此类中的预期内容。
 * 
 * <pre>
 * &lt;complexType name="Person">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="PersonKey" type="{http://rets.org/xsd/RETSCommons}resource-key"/>
 *         &lt;element name="PersonalTitle" type="{http://rets.org/xsd/RETSCommons}Title" minOccurs="0"/>
 *         &lt;element name="FirstName" type="{http://rets.org/xsd/RETSCommons}FirstName" minOccurs="0"/>
 *         &lt;element name="MiddleName" type="{http://rets.org/xsd/RETSCommons}MiddleName" minOccurs="0"/>
 *         &lt;element name="NickName" type="{http://rets.org/xsd/RETSCommons}NickName" minOccurs="0"/>
 *         &lt;element name="LastName" type="{http://rets.org/xsd/RETSCommons}LastName" minOccurs="0"/>
 *         &lt;element name="Suffix" type="{http://rets.org/xsd/RETSCommons}Suffix" maxOccurs="10" minOccurs="0"/>
 *         &lt;element name="Birthdate" type="{http://www.w3.org/2001/XMLSchema}date" minOccurs="0"/>
 *         &lt;element name="Gender" type="{http://rets.org/xsd/RETSCommons}gender" minOccurs="0"/>
 *         &lt;element name="Languages" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="ModificationTimestamp" type="{http://rets.org/xsd/RETSCommons}ModificationTimestamp" minOccurs="0"/>
 *         &lt;any namespace='##other' maxOccurs="30" minOccurs="0"/>
 *       &lt;/sequence>
 *       &lt;attribute ref="{http://rets.org/xsd/RETSCommons}isgSecurityClass use="required""/>
 *       &lt;attribute ref="{http://www.w3.org/XML/1998/namespace}lang"/>
 *       &lt;attribute name="systemId" type="{http://rets.org/xsd/RETSCommons}system-id" />
 *       &lt;attribute name="versionTimestamp" use="required" type="{http://www.w3.org/2001/XMLSchema}dateTime" fixed="2007-10-08T16:27:23Z" />
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Person", propOrder = {
    "personKey",
    "personalTitle",
    "firstName",
    "middleName",
    "nickName",
    "lastName",
    "suffix",
    "birthdate",
    "gender",
    "languages",
    "modificationTimestamp",
    "any"
})
public class Person {

    @XmlElement(name = "PersonKey", required = true)
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlSchemaType(name = "token")
    protected String personKey;
    @XmlElement(name = "PersonalTitle")
    protected Title personalTitle;
    @XmlElement(name = "FirstName")
    protected FirstName firstName;
    @XmlElement(name = "MiddleName")
    protected MiddleName middleName;
    @XmlElement(name = "NickName")
    protected NickName nickName;
    @XmlElement(name = "LastName")
    protected LastName lastName;
    @XmlElement(name = "Suffix")
    protected List<Suffix> suffix;
    @XmlElement(name = "Birthdate")
    @XmlSchemaType(name = "date")
    protected XMLGregorianCalendar birthdate;
    @XmlElement(name = "Gender")
    @XmlSchemaType(name = "token")
    protected Gender gender;
    @XmlElement(name = "Languages")
    protected String languages;
    @XmlElement(name = "ModificationTimestamp")
    protected ModificationTimestamp modificationTimestamp;
    @XmlAnyElement(lax = true)
    protected List<Object> any;
    @XmlAttribute(name = "isgSecurityClass", namespace = "http://rets.org/xsd/RETSCommons", required = true)
    protected String isgSecurityClass;
    @XmlAttribute(name = "lang", namespace = "http://www.w3.org/XML/1998/namespace")
    protected String lang;
    @XmlAttribute(name = "systemId")
    protected String systemId;
    @XmlAttribute(name = "versionTimestamp", required = true)
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar versionTimestamp;

    /**
     * 获取personKey属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getPersonKey() {
        return personKey;
    }

    /**
     * 设置personKey属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setPersonKey(String value) {
        this.personKey = value;
    }

    /**
     * 获取personalTitle属性的值。
     * 
     * @return
     *     possible object is
     *     {@link Title }
     *     
     */
    public Title getPersonalTitle() {
        return personalTitle;
    }

    /**
     * 设置personalTitle属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link Title }
     *     
     */
    public void setPersonalTitle(Title value) {
        this.personalTitle = value;
    }

    /**
     * 获取firstName属性的值。
     * 
     * @return
     *     possible object is
     *     {@link FirstName }
     *     
     */
    public FirstName getFirstName() {
        return firstName;
    }

    /**
     * 设置firstName属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link FirstName }
     *     
     */
    public void setFirstName(FirstName value) {
        this.firstName = value;
    }

    /**
     * 获取middleName属性的值。
     * 
     * @return
     *     possible object is
     *     {@link MiddleName }
     *     
     */
    public MiddleName getMiddleName() {
        return middleName;
    }

    /**
     * 设置middleName属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link MiddleName }
     *     
     */
    public void setMiddleName(MiddleName value) {
        this.middleName = value;
    }

    /**
     * 获取nickName属性的值。
     * 
     * @return
     *     possible object is
     *     {@link NickName }
     *     
     */
    public NickName getNickName() {
        return nickName;
    }

    /**
     * 设置nickName属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link NickName }
     *     
     */
    public void setNickName(NickName value) {
        this.nickName = value;
    }

    /**
     * 获取lastName属性的值。
     * 
     * @return
     *     possible object is
     *     {@link LastName }
     *     
     */
    public LastName getLastName() {
        return lastName;
    }

    /**
     * 设置lastName属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link LastName }
     *     
     */
    public void setLastName(LastName value) {
        this.lastName = value;
    }

    /**
     * Gets the value of the suffix property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the suffix property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getSuffix().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link Suffix }
     * 
     * 
     */
    public List<Suffix> getSuffix() {
        if (suffix == null) {
            suffix = new ArrayList<Suffix>();
        }
        return this.suffix;
    }

    /**
     * 获取birthdate属性的值。
     * 
     * @return
     *     possible object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public XMLGregorianCalendar getBirthdate() {
        return birthdate;
    }

    /**
     * 设置birthdate属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public void setBirthdate(XMLGregorianCalendar value) {
        this.birthdate = value;
    }

    /**
     * 获取gender属性的值。
     * 
     * @return
     *     possible object is
     *     {@link Gender }
     *     
     */
    public Gender getGender() {
        return gender;
    }

    /**
     * 设置gender属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link Gender }
     *     
     */
    public void setGender(Gender value) {
        this.gender = value;
    }

    /**
     * 获取languages属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getLanguages() {
        return languages;
    }

    /**
     * 设置languages属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setLanguages(String value) {
        this.languages = value;
    }

    /**
     * 获取modificationTimestamp属性的值。
     * 
     * @return
     *     possible object is
     *     {@link ModificationTimestamp }
     *     
     */
    public ModificationTimestamp getModificationTimestamp() {
        return modificationTimestamp;
    }

    /**
     * 设置modificationTimestamp属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link ModificationTimestamp }
     *     
     */
    public void setModificationTimestamp(ModificationTimestamp value) {
        this.modificationTimestamp = value;
    }

    /**
     * Gets the value of the any property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the any property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getAny().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link Object }
     * 
     * 
     */
    public List<Object> getAny() {
        if (any == null) {
            any = new ArrayList<Object>();
        }
        return this.any;
    }

    /**
     * 
     * 				
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getIsgSecurityClass() {
        return isgSecurityClass;
    }

    /**
     * 设置isgSecurityClass属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setIsgSecurityClass(String value) {
        this.isgSecurityClass = value;
    }

    /**
     * 
     * 					The preferred locale/language of this person.
     * 
     * 					The values are formed using the language tags
     * 					defined in RFC 3066, using the lang code and
     * 					country code from ISO 639 and ISO 3166
     * 					http://www.loc.gov/standards/iso639-2/php/code_list.php
     * 					http://www.iso.org/iso/en/prods-services/iso3166ma/index.html
     * 
     * 					This form is 
     * 					(ignore the xml comment tags)
     * 
     * 					Note that the separator is the dash '-' and not the
     * 					underscore character.
     * 					
     * 					Valid values include en, en-US and other combinations of
     * 					the code sets.
     * 
     * 					If omitted, the lang values is assumed to be en.
     * 
     * 					Further note that like the xml:lang attribute, this
     * 					element should be treated as case-insensitive. That is,
     * 					the values en-us, en-US, En-us and any other case
     * 					combination should be treated as identical.
     * 				
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getLang() {
        return lang;
    }

    /**
     * 设置lang属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setLang(String value) {
        this.lang = value;
    }

    /**
     * 获取systemId属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getSystemId() {
        return systemId;
    }

    /**
     * 设置systemId属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setSystemId(String value) {
        this.systemId = value;
    }

    /**
     * 获取versionTimestamp属性的值。
     * 
     * @return
     *     possible object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public XMLGregorianCalendar getVersionTimestamp() {
        return versionTimestamp;
    }

    /**
     * 设置versionTimestamp属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public void setVersionTimestamp(XMLGregorianCalendar value) {
        this.versionTimestamp = value;
    }

}
